/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package carreras.datos.connection;

import java.sql.SQLException;

/**
 *
 * @author Fanky <fanky10@gmail.com>
 * v0.1 usa Configuracion.getDBConn
 * v0.2 usa Configuracion.getConfiguracion().getDBConn() --usando sync get
 * v0.3 usa la singleton instance de DBConnector.getInstance
 */
public class Data {
    protected DBConnector db;
    /**
     * Default Connector extrae el conector segun configuracion
     */
    public Data(){
//        db = Configuracion.getDBConn();
//        db = Configuracion.getConfiguracion().getDBConn();
//        db = DataQueueManager.getInstance().getDBConn();
        db = DataQueueManager.getInstance().obtenerConector();
    }
    /**
     * se pasa como parametro el Connector ya creado
     * @param db
     */
    public Data(DBConnector db){
        this.db=db;
    }
    public void openConn() throws SQLException{
        if(db.connectionIsClosed())
            db.conectar();
    }
    public void closeConn() throws SQLException{
        closeOpenStreams();
        DataQueueManager.getInstance().devolverConector();
//        DataQueueManager.getInstance().returnDBConn();
//        Configuracion.getConfiguracion().returnDBConn();
        //este metodo es independiente de la conexion
//        db.closeOpenStreams();
//        closeOpenStreams();
//        if(!db.connectionIsClosed())
//            db.closeConnection();
    }
    /**
     * open stmt
     * open rset
     * close rset
     * close stmt
     */
    public void closeOpenStreams(){

//        try{
//            db.closeResultSet();
//        }catch(SQLException ex){
//            System.out.println("CLOSING RESULTSET EXCEPTION: "+ex.getMessage());
//        }
        try{
            db.closeStmt();
        }catch(SQLException ex){
            System.out.println("CLOSING STATEMENT EXCEPTION: "+ex.getMessage());
        }
    }
}
